iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 17
0

前言:

在做一個 app 時音量鍵會因為在不同情況下做不同的事,例如在有麥克風時需要控制麥克風的傳輸音量,在播音樂時就需要控制音量的輸出,所以這篇就是在說如何自由的控制想要的功能。

常用代碼:
STREAM_ALARM 警報
STREAM_MUSIC 音樂回放即媒體音量
STREAM_NOTIFICATION 窗口頂部狀態欄Notification,
STREAM_RING 鈴聲
STREAM_SYSTEM 系統
STREAM_VOICE_CALL 通話
STREAM_DTMF 雙音多頻

第二個direction,是調整的方向,增加或減少,可以是:
ADJUST_LOWER 降低音量
ADJUST_RAISE 升高音量
ADJUST_SAME 保持不變,這個主要用於向用戶展示當前的音量

第三個flags是一些附加參數,只介紹兩個常用的
FLAG_PLAY_SOUND 調整音量時播放聲音
FLAG_SHOW_UI 調整時顯示音量條,就是按音量鍵出現的那個

在 onKeyDown 下的 case 呼叫音源鍵的上跟下

package com.example.retrofit;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Service;
import android.media.AudioManager;
import android.util.Log;
import android.view.KeyEvent;
public class MainActivity extends AppCompatActivity {
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        AudioManager am = (AudioManager) getSystemService(Service.AUDIO_SERVICE);
        switch (keyCode) {
            case KeyEvent.KEYCODE_VOLUME_UP:
                Log.d("TAG", "音量提升鍵");
                am.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
                break;
            case KeyEvent.KEYCODE_VOLUME_DOWN:
                Log.d("TAG", "音量減少鍵");
                am.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
                break;
            default:
                break;
        }
        return super.onKeyDown(keyCode, event);
    }}

這樣當你把程式寫在case裡面時他就可以當一個button使用了


上一篇
第16篇:如何使手機震動
下一篇
#第18篇:藍芽的搜尋
系列文
Android的30天學習歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言